package com.example.petstore.persist.model;

import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * @author autfish
 * http://blog.csdn.net/autfish/article/details/51899002
 */
public interface ProductMapper {

	/**
	 * 按编号查询商品
	 * @param id
	 * @return
	 */
	Product selectById(int id);
	
	/**
	 * 添加一个商品	
	 * @param product
	 */
	void addProduct(Product product);
	
	/**
	 * 更新指定商品
	 * @param product
	 */
	void updateProduct(Product product);
	
	/**
	 * 删除指定商品
	 * @param id
	 */
	void deleteProduct(int id);
	
	/**
	 * 删除全部商品
	 */
	void deleteAll();
	
	/**
	 * 查询符合条件的记录总数
	 * @param id id>0
	 * @param name name不为空
	 * @param fromPrice >-1
	 * @param toPrice >-1
	 * @return
	 */
	int matches(@Param(value="id") int id, 
			@Param(value="name") String name, 
			@Param(value="fromPrice") float fromPrice, 
			@Param(value="toPrice") float toPrice);
	
	/**
	 * 按查询条件及分页条件分段查询记录
	 * @param id
	 * @param name
	 * @param fromPrice
	 * @param toPrice
	 * @param fetchIndex
	 * @param fetchCount
	 * @return
	 */
	List<Product> findProducts(@Param(value="id") int id, 
			@Param(value="name") String name, 
			@Param(value="fromPrice") float fromPrice, 
			@Param(value="toPrice") float toPrice, 
			@Param(value="fetchIndex") int fetchIndex, 
			@Param(value="fetchCount") int fetchCount);
}
